home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Information
/
CSMP Digest
/
volume 3
/
csmp-digest-v3-104
< prev
next >
Wrap
Internet Message Format
|
1995-12-31
|
18KB
From: pottier@clipper.ens.fr (Francois Pottier)
Subject: csmp-digest-v3-104
Date: Tue, 11 Jul 1995 13:49:34 +0200 (MET DST)
C.S.M.P. Digest Tue, 11 Jul 95 Volume 3 : Issue 104
Today's Topics:
Tools for finding mem. leaks-overwrites
[Q] How do you create a JFIF file with Quicktime's JPEG?
The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
(pottier@clipper.ens.fr).
The digest is a collection of article threads from the internet newsgroups
comp.sys.mac.programmer.help, csmp.tools and csmp.misc. It is designed for
people who read news semi-regularly and want an archive of the discussions.
If you don't know what a newsgroup is, you probably don't have access to
it. Ask your systems administrator(s) for details. If you don't have access
to news, you may still be able to post messages to the group by using a
mail server like anon.penet.fi (mail help@anon.penet.fi for more
information).
Each issue of the digest contains one or more sets of articles (called
threads), with each set corresponding to a 'discussion' of a particular
subject. The articles are not edited; all articles included in this digest
are in their original posted form (as received by our news server at
nef.ens.fr). Article threads are not added to the digest until the last
article added to the thread is at least two weeks old (this is to ensure that
the thread is dead before adding it to the digest). Article threads that
consist of only one message are generally not included in the digest.
The digest is officially distributed by two means, by email and ftp.
If you want to receive the digest by mail, send email to listserv@ens.fr
with no subject and one of the following commands as body:
help Sends you a summary of commands
subscribe csmp-digest Your Name Adds you to the mailing list
signoff csmp-digest Removes you from the list
Once you have subscribed, you will automatically receive each new
issue as it is created.
The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
Questions related to the ftp site should be directed to
scott.silver@dartmouth.edu.
-------------------------------------------------------
>From krev@netcom.com (Umberto milletti)
Subject: Tools for finding mem. leaks-overwrites
Date: Mon, 19 Jun 1995 22:30:32 GMT
Organization: NETCOM On-line Communication Services (408 261-4700 guest)
I'm looking for tools that will find memory overwrites (out-of-bounds writes
and such), memory leaks and other nasty stuff that's hard to track down without
good tools. Other tools I've used in the past that fit this bill are purify/
quantify from Pure, and Boundschecker from NuMega, but I don't think either
has a mac version.
We're kind of desperate, trying to track down a nasty overwrite.
Thanks in advance (please send email, as I don't read this all the time),
Umberto@krev.com
+++++++++++++++++++++++++++
>From jake@presage.com (Jake Hoelter)
Date: Mon, 19 Jun 1995 22:40:08 -0800
Organization: Presage Software
In article <krevDAFyIx.24L@netcom.com>, krev@netcom.com (Umberto milletti)
wrote:
>I'm looking for tools that will find memory overwrites (out-of-bounds writes
>and such), memory leaks and other nasty stuff that's hard to track down
without
>good tools. Other tools I've used in the past that fit this bill are purify/
>quantify from Pure, and Boundschecker from NuMega, but I don't think either
>has a mac version.
>We're kind of desperate, trying to track down a nasty overwrite.
There's two tools that are great to use for tracking down leaks. First is
Metrowerks' ZoneRanger. It comes with CodeWarrior, plus I think they
freely distribute it, so you can download it from wherever. The other tool
is QC from Onyx Technology. QC will let you find overwrites, underwrites,
invalidate memory, do heap stressing (scramble, purge), and a bunch of
other cool stuff.
QC costs about $100.00. You can contact Onyx at (813) 795-7801. Or at
onyxtech@aol.com. There's a free demo version of QC floating around the
nets somewhere.
Between the two of those tools you can track down most memory problems on
the Mac.
Jake Hoelter
Presage Software
jake@presage.com
+++++++++++++++++++++++++++
>From pbenson@iona.ie (Paddy Benson)
Date: Wed, 21 Jun 1995 13:32:35 +0000
Organization: IONA Technologies
In article <krevDAFyIx.24L@netcom.com>, krev@netcom.com (Umberto milletti)
wrote:
> I'm looking for tools that will find memory overwrites (out-of-bounds writes
> and such), memory leaks and other nasty stuff that's hard to track down
MacsBug has a leaks dcmd. This is available on the developer CDs. Also
MacsBug has a built in StepSpy (SS) command to check when a range in
memory changes
Paddy
--
- ---------------------------------------------------------------------
Paddy Benson (IT Design) email: pbenson@iona.ie
(on contract to...)
IONA Technologies Ltd, ftp: ftp.iona.ie
8-34 Percy Place, www: http://www.iona.ie/
Dublin 4, ph: +353-1-668-6522
Republic of Ireland. fax: +353-1-668-6573
- ---------------------------------------------------------------------
+++++++++++++++++++++++++++
>From jordanz@altura.com (Jordan Zimmerman)
Date: Wed, 21 Jun 1995 18:10:25 -0800
Organization: Altura Software, Inc.
> I'm looking for tools that will find memory overwrites (out-of-bounds writes
> and such), memory leaks and other nasty stuff that's hard to track down
without
> good tools. Other tools I've used in the past that fit this bill are purify/
> quantify from Pure, and Boundschecker from NuMega, but I don't think either
> has a mac version.
> We're kind of desperate, trying to track down a nasty overwrite.
> Thanks in advance (please send email, as I don't read this all the time),
> Umberto@krev.com
QC (fron Qnyx Technologies), DoubleTrouble & DisposeResource (on Apple
Developer CD, etc.), Jasik's Debugger - to name a few.
--
Jordan Zimmerman, Altura Software
home page: http://www.altura.com/jordanz/home.html
Who is John Galt?
+++++++++++++++++++++++++++
>From isis@netcom.com (Mike Cohen)
Date: Thu, 22 Jun 1995 23:33:12 GMT
Organization: ISIS International
jordanz@altura.com (Jordan Zimmerman) writes:
>QC (fron Qnyx Technologies), DoubleTrouble & DisposeResource (on Apple
>Developer CD, etc.), Jasik's Debugger - to name a few.
Do you know of anything similar to QC for windoze? I'm trying to debug a
memory overwrite problem in some mac code ported to Visual C++.
--
Mike Cohen - isis@netcom.com
Home Page: ftp://ftp.netcom.com/pub/is/isis/home.html
PUSH THE BUTTON... SOMEONE
+++++++++++++++++++++++++++
>From jordanz@altura.com (Jordan Zimmerman)
Date: Fri, 23 Jun 1995 09:48:50 -0800
Organization: Altura Software, Inc.
> In article <krevDAFyIx.24L@netcom.com>, krev@netcom.com (Umberto milletti)
> wrote:
>
> > I'm looking for tools that will find memory overwrites (out-of-bounds writes
> > and such), memory leaks and other nasty stuff that's hard to track down
>
> MacsBug has a leaks dcmd. This is available on the developer CDs. Also
> MacsBug has a built in StepSpy (SS) command to check when a range in
> memory changes
>
In addition to the commercial/freeware tools out there, I usually build
leak checking into my code directly. Using the C preprocessor, you define
all memory allocation routines to shells that record the allocation. eg.
#define NewHandle(size) RecordNewHandle(size, __FILE__, __LINE__)
#define DisposeHandle(h) RecordDisposeHandle(h)
So, RecordNewHandle calls NewHandle, saves the handle in an array (also
saving which file and line it came from). RecordDisposeHandle removes the
allocation from the array. At the end of the program, if you have
allocations left in your array, there's a leak. You can use the saved
file name and line number to find where it was allocated.
This method takes some time to implement (there are a _lot_ of potential
allocators), but in the end is really useful. Also, having the info can
be used for finding memory corruption, etc.
--
Jordan Zimmerman, Altura Software
home page: http://www.altura.com/jordanz/home.html
Who is John Galt?
+++++++++++++++++++++++++++
>From aparajit@natural.com (Aparajita Fishman)
Date: 25 Jun 1995 02:11:47 GMT
Organization: Natural Intelligence, Inc.
> In article <krevDAFyIx.24L@netcom.com>, krev@netcom.com (Umberto milletti)
> wrote:
>
> > I'm looking for tools that will find memory overwrites (out-of-bounds writes
> > and such), memory leaks and other nasty stuff that's hard to track down
Contact info@microquill.com about their product SmartHeap. It's a
complete replacement for the memory manager which not only does
leak/overwrite detection and so forth, but is also a significantly
faster allocator over time than the allocators that come with any
compiler on the market.
\_ \_ \_ -----------------------------------------------
\_\_\_ \_ Aparajita Fishman aparajita@natural.com
\_ \__ \_ Software Developer tel (718) 262-8022
\_ \_ \_ Natural Intelligence, Inc. fax (718) 262-8022
---------------------------
>From oster@netcom.com (David Phillip Oster)
Subject: [Q] How do you create a JFIF file with Quicktime's JPEG?
Date: Mon, 12 Jun 1995 04:34:57 GMT
Organization: Netcom Online Communications Services (408-241-9760 login: guest)
The QuickTime volume of Inside Macintosh sample code that works for making
a PICT file that has a JPEG compressed image.
How do you make a valid file of type JFIF? I've tried just writing the data
from QuickTime's FCompressImage into a file, but programs that know JFIF
say that that isn't a valid JFIF file.
Where is the JFIF file documented?
--
- ------- <mail-to:oster@netcom.com> ----------
Ahh! The thorazine is wearing off and the odinazine is coming on...
+++++++++++++++++++++++++++
>From oster@netcom.com (David Phillip Oster)
Date: Tue, 13 Jun 1995 00:34:47 GMT
Organization: Netcom Online Communications Services (408-241-9760 login: guest)
In article <osterDA1M29.J0q@netcom.com> oster@netcom.com (I) write:
>The QuickTime volume of Inside Macintosh sample code that works for making
>a PICT file that has a JPEG compressed image.
>How do you make a valid file of type JFIF? I've tried just writing the data
>from QuickTime's FCompressImage into a file, but programs that know JFIF
>say that that isn't a valid JFIF file.
>Where is the JFIF file documented?
Well, I pulled out a handy CD-ROM of usenet faqs, and found two ways to
solve my problem:
1.) source code for reading and writing JPEG files.
Free, portable C code for JPEG compression is available from the Independent
JPEG Group. A package containing our source code,
documentation, and some small test files is available from ftp.uu.net
(192.48.96.9) in directory /graphics/jpeg. The current release is v5,
file jpegsrc.v5.tar.gz. You can retrieve this file by FTP or UUCP.
If you are on a PC and don't know how to cope with .tar.gz format, you may
prefer ZIP format, which you can find at Simtel archive sites (see NOTE
above), file msdos/graphics/jpegsrc5.zip. On CompuServe, see the
GRAPHSUPPORT forum (GO GRAPHSUP), library 15, file jpsrc5.zip.
2.) A kluge that is quick and easy:
[11] How do I recognize which file format I have, and what do I do about it?
If you have an alleged JPEG file that your software won't read, it's likely
to be HSI format or some other proprietary JPEG-based format. You can tell
what you have by inspecting the first few bytes of the file:
1. A JFIF-standard file will start with the four bytes (hex) FF D8 FF E0,
followed by two variable bytes (often hex 00 10), followed by 'JFIF'.
2. If you see FF D8 at the start, but not the 'JFIF' marker, you may have a
"raw JPEG" file. This is probably decodable as-is by JFIF software ---
it's worth a try, anyway.
3. HSI files start with 'hsi1'. You're out of luck unless you have HSI
software. Portions of the file may look like plain JPEG data, but they
won't decompress properly with non-HSI programs.
4. A Macintosh PICT file, if JPEG-compressed, will have several hundred
bytes of header (often 726 bytes, but not always) followed by JPEG data.
Look for the 3-byte sequence (hex) FF D8 FF --- the text 'Photo - JPEG'
will usually appear shortly before this header, and 'JFIF' or 'AppleMark'
will usually appear shortly after it. Strip off everything before the
FF D8 FF and you should be able to decode the file.
- -------------
In code, that looks like this:
/* TrimToJFIF - according to the JPEG FAQ, JFIF embedded in Apple starts with
FF D8 FF
*/
static OSErr TrimToJFIF(Handle h){
static char start[] = { 0xFF, 0xD8, 0xFF};
long offset, len;
offset = Munger(h, 0, start, 3, NULL, 0);
if(offset > 0){
len = GetHandleSize(h);
BlockMoveData(*h + offset, *h, len - offset);
SetHandleSize(h, len - offset);
return noErr;
}
return eJPEGFormatFailure;
}
I've tried it, and it works!
--
- ------- <mail-to:oster@netcom.com> ----------
Ahh! The thorazine is wearing off and the odinazine is coming on...
+++++++++++++++++++++++++++
>From ldo@waikato.ac.nz (Lawrence D9Oliveiro)
Date: Tue, 13 Jun 1995 17:41:34 +1200
Organization: University of Waikato
In article <osterDA1M29.J0q@netcom.com>, oster@netcom.com (David Phillip
Oster) wrote:
>I've tried just writing the data
>from QuickTime's FCompressImage into a file, but programs that know JFIF
>say that that isn't a valid JFIF file.
That should really be all there is to it. To check that you've written the
data properly, have you tried reading it back and putting it through
FDecompressImage with the same ImageDescriptionhandle?
+++++++++++++++++++++++++++
>From bas@luna.nl (Bas A. Schulte)
Date: Tue, 13 Jun 1995 09:59:22 +0200
Organization: Models, Inc.
In article <osterDA35M0.KFw@netcom.com>, oster@netcom.com (David Phillip
Oster) wrote:
> >How do you make a valid file of type JFIF? I've tried just writing the data
> >from QuickTime's FCompressImage into a file, but programs that know JFIF
> >say that that isn't a valid JFIF file.
[stuff deleted]
> static OSErr TrimToJFIF(Handle h){
> static char start[] = { 0xFF, 0xD8, 0xFF};
> long offset, len;
Hmm, I don't know how solid you want your code to be, but I wouldn't dare
this. To know for sure where the JFIF (hopefully it IS JFIF) part resides
in the PICT, you'd have to fully parse the PICT, scanning through all
opcodes until you find the compressed pixmap part. Quite hard to do.
The way to go is to use FCompressImage (like Lawrence said). I can assure
you that that works. Check your code again. The one thing that might be a
problem is when the user has another JPEG codec installed, or Apple
changes theirs in a future release. There's no garantuee that the stream
output by the codec is JFIF complaint. It will be JPEG, just maybe not
always JFIF.
BTW, Apple's JPEG codec is really really fast...
regards,
Bas Schulte
+++++++++++++++++++++++++++
>From Maf Vosburgh <maf@mmcorp.com>
Date: 14 Jun 1995 22:56:29 GMT
Organization: MMC
In article <osterDA1M29.J0q@netcom.com> David Phillip Oster,
oster@netcom.com writes:
>The QuickTime volume of Inside Macintosh sample code that works for making
>a PICT file that has a JPEG compressed image.
>
>How do you make a valid file of type JFIF? I've tried just writing the data
>from QuickTime's FCompressImage into a file, but programs that know JFIF
>say that that isn't a valid JFIF file.
I enclose some source code that is based on example code written by
Mark Krueger, who wrote the QuickTime Image Compression manager.
It contains the useful proc:
OSErr WriteJpegData(PicHandle pic, short fileRef);
All you do is
1)Make or open a JPEG compressed PICT
2)Make a new empty file of type JPEG or JFIF.
3)Open it.
4)Call WriteJpegData
5)Close the file.
Maf Vosburgh
+++++++++++++++++++++++++++
>From piguet@ia.epfl.ch (Yves Piguet)
Date: Fri, 23 Jun 1995 20:07:57 +0200
Organization: Institut d'automatique, EPFL
In article <3rnpet$879@news.bt.net>, Maf Vosburgh <maf@mmcorp.com> wrote:
>In article <osterDA1M29.J0q@netcom.com> David Phillip Oster,
>oster@netcom.com writes:
>>How do you make a valid file of type JFIF? I've tried just writing the data
>>from QuickTime's FCompressImage into a file, but programs that know JFIF
>>say that that isn't a valid JFIF file.
>
>I enclose some source code that is based on example code written by
>Mark Krueger, who wrote the QuickTime Image Compression manager.
>
>It contains the useful proc:
>OSErr WriteJpegData(PicHandle pic, short fileRef);
And how do you *read* a jpeg using QT? One has to create the Image
Description Record,
but how?
Thanks in advance!
Yves Piguet <piguet@ia.epfl.ch>
Institut d'automatique Tel: +41 21 693 38 34
EPFL Fax: +41 21 693 25 74
CH - 1015 Lausanne Talk, cusm: on request
+++++++++++++++++++++++++++
>From dale_satterfield@powertalk.apple.com (Dale Satterfield)
Date: 26 Jun 1995 15:54:43 GMT
Organization: Apple Computer
In article <piguet-2306952007570001@iamac60.epfl.ch>, piguet@ia.epfl.ch
(Yves Piguet) wrote:
> In article <3rnpet$879@news.bt.net>, Maf Vosburgh <maf@mmcorp.com> wrote:
>
> >In article <osterDA1M29.J0q@netcom.com> David Phillip Oster,
> >oster@netcom.com writes:
> >>How do you make a valid file of type JFIF? I've tried just writing the data
> >>from QuickTime's FCompressImage into a file, but programs that know JFIF
> >>say that that isn't a valid JFIF file.
> >
I had this same problem and was able to write out the file data the QT
created, and then read it back in again with JPEGView, which had no
problem with it. The files were also able to be transfered to a windows
machine and its jpeg viewer was able to open them.
As to reading in a file, you need to create the descriptor first, by
reading the JFIF header. There is sample code out on the net somewhere. I
have lost my directions to it.
---------------------------
End of C.S.M.P. Digest
**********************
Attachment converted: Spiff:Archive.sit (SITD/SIT!) (00033BD7)